It is generally desirable for a high availability disk subsystem to retain one or more portions of data during a power outage that would otherwise be stored in volatile memory. This may be accomplished by offloading the desired data to a flash device and then restoring the data when the power is restored. However, as restoration of the desired data from a flash device proceeds, data that has already been retrieved and/or restored should be marked as invalid. Otherwise, the system may attempt to restore the same data again on a subsequent restore (e.g., in the event of another power outage during an ongoing restore process).
The data written to the backup device is managed via metadata that also resides on the backup device. Once data is restored, it must be marked as invalid by updating the metadata on the backup device (e.g., updating log intents). In this manner, the metadata is written back to the flash device during the restore process. However, these periodic updates to the metadata on the flash device typically result in small (with respect to the data being restored) and/or random writes to the flash device. These scattered and/or random writes, in turn, may substantially reduce the input/output (I/O) throughput of the flash device.
In an I/O intensive application like a high availability disk subsystem, the restoration process is generally performed while the high availability disk subsystem services external (host) I/O requests. Thus, the above mentioned metadata updates to the flash device may have a dramatic negative impact on the ability of the high availability disk subsystem to service incoming I/O requests in a timely manner.